/*
 * P1876 开灯
 *
 * 首先所有的灯都是关的（注意是关！），
 * 编号为 1 的人把是 1 的倍数的灯全部打开，
 * 编号为 2 的人把是 2 的倍数的灯全部关上，
 * 编号为 3 的人又把是 3 的倍数的灯开的关上，关的开起来……
 * 直到第 N 个人为止。
 *
 * 给定 N，求 N 轮之后，还有哪几盏是开着的。
 * （1 <= N <= 2^40）
 *
 * 样例输入：
 * 5
 * 样例输出：
 * 1 4
 */

#include <iostream>
#include <fstream>
#define LOCAL
using namespace std;

// 解法一：数组
//
// const int LEN = 1e8 + 10;
// bool lights[LEN]; // true/false 开/关
// int main()
// {
//     int n;
// #ifdef LOCAL
//     freopen("in.txt", "r", stdin);
//     freopen("out.txt", "w", stdout);
// #endif
//     while (scanf("%d", &n) == 1)
//     {
//         if (n == 1)
//         {
//             // 特殊情况
//             cout << 1 << endl;
//             continue;
//         }
//         // 把所有灯打开：true
//         for (int i = 1; i < n; ++i)
//             lights[i] = true;
//
//         // 反复开关
//         for (int i = 2; i < n; ++i)
//             for (int j = 1, x = i * j; x <= n; ++j, x = i * j)
//                 lights[x] ^= true;
//
//         // 输出检查为 true（打开）的灯
//         for (int i = 1; i <= n; ++i)
//             if (lights[i])
//                 cout << i << " ";
//         cout << endl;
//     }
//     return 0;
// }
// 不足：对于 N > LEN 的情况无可奈何

// 解法二：
// 发现最后亮着的是平方数。
// 因为平方数有奇数个约数。
//
using ull = unsigned long long;
int main()
{
    ull n = 0ULL;
#ifdef LOCAL
    ifstream cin("./in.txt");
    ofstream cout("./out.txt");
#endif
    while (cin >> n)
    {
        for (ull i = 1ULL, square = i * i; square <= n; i++, square = i * i)
            cout << square << ' ';
        cout << endl;
    }
    return 0;
}